package com.jrx.anytxn.transaction.service;

import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.entity.TlFilePaymentLog;
import com.jrx.anytxn.transaction.bean.PaphFileBean;
import com.jrx.anytxn.transaction.entity.AmLoanAccountInfo;
import com.jrx.anytxn.transaction.entity.TlDisbursementLog;
import com.jrx.anytxn.transaction.entity.TlThirdPartyPayment;

import java.io.File;
import java.util.List;

/**
 * @program: anytxn-cf-parent
 * @description: 平安普惠日终文件处理
 * @author: xiaoyu.jing
 * @date: 2021-03-11 21:18
 **/
public interface IPaphFileService {

    /**
     * 生成前一日放款文件
     *
     * @param tlDisbursementLog
     * @return
     */
    PaphFileBean generateLoanMessage(TlDisbursementLog tlDisbursementLog) throws TxnBizException;

    /**
     * 生成宽限期外逾期文件
     *
     * @param amLoanAccountInfo
     * @return
     * @throws TxnBizException
     */
    PaphFileBean generateOverMessage(AmLoanAccountInfo amLoanAccountInfo) throws TxnBizException;

    /**
     * 生成前一日还款文件
     *
     * @param tlThirdPartyPayment
     * @return
     * @throws TxnBizException
     */
    PaphFileBean generatePayMessage(TlThirdPartyPayment tlThirdPartyPayment) throws TxnBizException;

    /**
     * 生成平安普惠同步分库文件
     * @param items
     * @param filePath
     * @param fileName
     * @param fileType
     */
    void generateFile(List<String> items, String filePath, String fileName, String fileType, String productType);


    /**
     * 生成银行扣款文件
     * @param item
     * @return
     */
    PaphFileBean generateBankDeductionMessage(TlFilePaymentLog item) throws TxnBizException;

    /**
     * 合并分库文件，生成对应MD5文件
     * @param filePath 文件路径
     * @param fileCode 文件类型
     * @param productType 产品类型
     * @throws Exception
     */
    void mergeBankFile(String filePath, String fileCode, String productType) throws Exception;

    /**
     * 提前结清证明文件处理
     *
     * @param basePath     保存回传影像的路径
     * @param fromBasePath 回传影像的获取路径
     * @author liuyang
     * @date 2021-03-27
     */
    void disposePreterminationFile(String basePath, String fromBasePath) throws TxnException;

    /**
     * 借款合同文件处理
     *
     * @param basePath     保存回传影像的路径
     * @param fromBasePath 回传影像的获取路径
     * @author liuyang
     * @date 2021-03-27
     */
    void disposeContractFile(String basePath, String fromBasePath) throws TxnException;

    /**
     * 提前结清证明，借款合同打包
     *
     * @param basePath 保存回传影像的路径
     * @author liuyang
     * @date 2021-03-27
     */
    void compressPreContFile(String basePath) throws TxnException;

}
